package com.sora.pipeline.domain.dto;

import com.sora.pipeline.domain.RemedyTask;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 整改任务详细信息DTO
 * 包含缺陷类型名和等级名
 * 
 * @author system
 * @since 2025-01-20
 */
@Data
public class RemedyTaskWithDetailsDTO {
    
    /**
     * 任务ID
     */
    private Long id;
    
    /**
     * 任务编号
     */
    private String taskNo;
    
    /**
     * 缺陷ID
     */
    private Long defectId;
    
    /**
     * 缺陷代码
     */
    private String defectCode;
    
    /**
     * 缺陷类型ID
     */
    private Integer defectTypeId;
    
    /**
     * 缺陷类型名称
     */
    private String defectTypeName;
    
    /**
     * 线路ID
     */
    private Long lineId;
    
    /**
     * 线路代码
     */
    private String lineCode;
    
    /**
     * 线路名称
     */
    private String lineName;
    
    /**
     * 等级ID
     */
    private Integer levelId;
    
    /**
     * 等级名称
     */
    private String levelName;
    
    /**
     * 负责人ID
     */
    private Long assigneeId;
    
    /**
     * 负责人姓名
     */
    private String assigneeName;
    
    /**
     * 负责人用户名
     */
    private String assigneeUsername;
    
    /**
     * 状态：pending/assigned/in_progress/completed/closed
     */
    private String status;
    
    /**
     * 任务描述
     */
    private String description;
    
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    
    /**
     * 截止时间
     */
    private LocalDateTime deadline;
    
    /**
     * 开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 完成时间
     */
    private LocalDateTime completeTime;
    
    /**
     * 完成进度
     */
    private Integer progress;
    
    /**
     * 图片JSON
     */
    private String imagesJson;
    
    /**
     * 创建人
     */
    private Long createdBy;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 更新人
     */
    private Long updatedBy;
    
    /**
     * 是否删除
     */
    private Boolean deleted;
    
    /**
     * 从RemedyTask实体转换
     */
    public static RemedyTaskWithDetailsDTO fromRemedyTask(RemedyTask task) {
        RemedyTaskWithDetailsDTO dto = new RemedyTaskWithDetailsDTO();
        dto.setId(task.getId());
        dto.setTaskNo(task.getTaskNo());
        dto.setDefectId(task.getDefectId());
        dto.setLineId(task.getLineId());
        dto.setLevelId(task.getLevelId());
        dto.setAssigneeId(task.getAssigneeId());
        dto.setStatus(task.getStatus());
        dto.setDescription(task.getDescription());
        dto.setCreateTime(task.getCreateTime());
        dto.setDeadline(task.getDeadline());
        dto.setStartTime(task.getStartTime());
        dto.setCompleteTime(task.getCompleteTime());
        dto.setProgress(task.getProgress());
        dto.setImagesJson(task.getImagesJson());
        dto.setCreatedBy(task.getCreatedBy());
        dto.setUpdatedAt(task.getUpdatedAt());
        dto.setUpdatedBy(task.getUpdatedBy());
        dto.setDeleted(task.getDeleted());
        return dto;
    }
}
